package com.order.dao;

import com.order.pojo.Order;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;

@Repository
@Mapper
public interface OrderDao {
    /*
    Integer id;
    Integer customer_id;//顾客ID
    Double price;//总价
    Timestamp time;//订单创建时间
    Integer desk_id;//就餐桌子代号
    Integer state;//订单状态
    */
    //点餐,在service层中操作，项orderlist中插入数据
    /*
    0代表未支付 1代表支付
    逻辑:成功预定或者成功入座之后，在数据表里添加一个数据(顾客ID，桌子ID,订单状态为0)，把主键返回，根据这个主键点餐
    点餐的时候根据orderID在OrderList里面添加点餐数据
    可以实时查找消费总额:根据orderId去OrderList中查找
    结账的时候，根据实时查找方法查出总额，并且把总额添加进去，修改订单状态为1
    同时根据顾客ID扣除相应的金额，金额不足直接为负(因为实行的是会员制)
    */
    //开始就餐,在order表里面添加数据，主键回填
    //INSERT INTO `order` (`customer_id`, `time`, `desk_id`, `state`) VALUES ('1', '2020-03-21 22:00:47', '1', '0')
    @Insert("INSERT INTO orders (customer_id,time,desk_id,state)" +
            " VALUES(#{customer_id},#{time},#{desk_id},#{state})")
    @Options(useGeneratedKeys = true, keyProperty = "id" ,keyColumn = "id")
    Integer startEating(Order order);
    //结账,去OrderListDao表里面查出总金额，填到该表
    @Update("UPDATE orders SET state=1 , price=#{money} WHERE id=#{order_id}")
    Boolean endEating(Double money,Integer order_id);
    //根据点餐id获取顾客id
    @Select("SELECT customer_id FROM orders WHERE id=#{order_id} LIMIT 1")
    Integer customerId(Integer order_id);
    //更具点餐id获取桌子id
    @Select("SELECT desk_id FROM orders WHERE id=#{order_id} LIMIT 1")
    Integer deskId(Integer order_id);


}
